這篇來好好研究一下MVC 5內提供的9種繼承ActionResult的型別,可以參考這個網站,其中我就挑幾個我自己常用的出來說明。
用途是輸出HTML內容,為什麼要先講ViewResult呢,因為這跟第10天講的認識Controller - 加入控制器中提到的錯誤有關係
為什麼加入一個新的Controller後去瀏覽Action會出現錯誤呢?其實這個錯誤到現在我自己到現在還是蠻常遇到的,我們透過錯誤訊息可以得知Controller它找不到相對應的View檔案所以就掛了,這時候就要去新增一個View來呈現資料
將游標停在Action中的程式碼區域內,按滑鼠右鍵>加入檢視
直接按加入
Index.cshtml檔案被建立,路徑在Views/Test/Index.cshtml
再次瀏覽Test/Index 就可以正常顯示Html的畫面囉!
return View() 會去讀取Views資料夾下讀取一樣名稱的Controller資料夾以及同名的cs.html檔案
如果想要換成讀取你自己指定的cs.html也是可以的喔!在View後面打一個(號時會出現多載方法的提示,可以根據自己的需求選擇對應的方法再將參數傳入就可以囉
例如想讀取Views裡面的Home/About.cshtml的話,可以這樣寫
return View("~/Views/Home/About.cshtml");
再來尋找View的順序,從錯誤畫面就可以得知,會先找aspx與ascx的檔案再找cs,html與vb.html,資料夾目錄會先找Views/{Controller}再找Views/Shared資料夾
在Controller控制流程到最後常常會有轉址的動作,裡如按下會員登出的按鈕之後會導到重新登入的畫面,RedirectRouteResult有四大類方法可以使用
我自己是最常使用RedirectToAction方法
當按下"下載"按鈕時常常會連結到一個檔案的url此時瀏覽器就會出現下載的視窗,我自己最常使用FileContentResult這個方法,另外也有FilePathResult與FileStreamResult方法
其實還有很多哩哩摳摳的ActionResult像是JsonResult與ContentResult都蠻常用的,詳細可以參考這個網站,後續有使用到再補充說明